package com.example.projectjava.service;

import com.example.projectjava.dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

@Service
public class UserService {


    @Autowired
    UserDao userDao;//spring会自动将userDao注入到此类为(自动为该属性赋值)

    /**
     * 用户注册的业务逻辑方法
     *
     * @return
     */
    public int userRegister(String username,
                            String pwd,
                            String birthday, String phone) {

        //此方法中，要判断前端传递过来的用户名，在appuser表中中否存在
        List<Map<String, Object>> res = userDao.queryUserByName(username);//如果能够得到查询结果，代表用户名已存在
        if (res.size() > 0) {
            throw new RuntimeException("用户名已存在");
            //当 throw 语句被执行时，会立即抛出一个异常，函数的执行流程会终止，并且会直接跳出该函数。
        }
        //  还要判断手机号是否已被占用
        List<Map<String, Object>> res2 = userDao.queryUserByMobilePhone(phone);
        if (res2.size() > 0) {
            throw new RuntimeException("手机已被占用");
        }
        //以上两个条件都通过时，才允许做用户注册
        return userDao.saveUser(username, pwd, birthday, phone);
    }

    /**
     * 用户登录的业务逻辑方法
     *
     * @return
     */
    public int userLogin(String username, String pwd) {
        List<Map<String, Object>> res3 = userDao.queryUserByName(username);
        if (res3.size() == 0) {
            throw new RuntimeException("用户名不存在");
        }
        String right_pwd = res3.get(0).get("pwd").toString();
        if (!right_pwd.equals(pwd)) {
            throw new RuntimeException("密码错误");
        }
        return 1;
    }

    /**
     * 查询所有用户的业务逻辑方法
     *
     * @return
     */
    public List<Map<String, Object>> queryAllUser() {
        return userDao.queryAllUser();
    }

    public List<Map<String, Object>> queryUserByName(String username) {
        return userDao.queryUserByName(username);
    }

    /**
     * 根据用户名删除用户的业务逻辑方法
     *
     * @return
     */
    public int deleteUser(String username) {
        int res = userDao.deleteUser(username);
        if (res <= 0) {
            throw new RuntimeException("用户名不存在");
        } else {
            return 1;
        }
    }

    public int updateUser(String username, String pwd, String birthday, String phone) {
        int res = userDao.updateUser(username, pwd, birthday, phone);
        if (res <= 0) {
            throw new RuntimeException("用户名不存在");
        }
        return 1;
    }
}
